home *** CD-ROM | disk | FTP | other *** search
/ By Popular Request 2.0 / By Popular Request 2.0 (Arsenal Computer).ISO / amiga_4 / mm_1_0.lha / MM / Contrib / EMS_to_MM.lha / EMStoMM.ems next >
Text File  |  1995-02-09  |  17KB  |  682 lines

  1. /* RH 05.02.95 */
  2.  
  3. parse arg cfg .
  4.  
  5. address command
  6.  
  7. call Include_Lib('ems_rexx')
  8.  
  9. LF    = 'a'x
  10.  
  11. if cfg='' then
  12.     do
  13.         cfg='MM:config/Mailmanager.cfg'
  14.         if EMS_File_Select('MailManager config-file', 'cfg')='CANCEL' then exit
  15.  
  16.         if exists(cfg) then
  17.         if EMS_Do_Request('"'cfg'"'LF'already exists!'LF || LF'Overwrite it?'LF, 'YES|NO')='NO' then exit
  18.     end
  19.  
  20. if ~open(out, cfg, w) then
  21.     do
  22.         say '*** ERROR: Unable to open' cfg'!!!'
  23.     exit 20
  24.     end
  25.  
  26. dlg. = 0
  27. if EMS_Do_Request('Are you using DLG?', 'YES|NO')='YES' then dlg.dlg = 1
  28.  
  29. call Set_General
  30. call Ask_Aliases
  31. call Get_Addresses
  32. call Get_Groups
  33. call Get_Archivers
  34. call Get_Nodes
  35. call Get_Routing
  36. call Get_Areas
  37.  
  38. call EMS_Do_Request("NOTE:"LF"Archivers, routing & custom-text's"LF"have to be configured manually!", "OK")
  39. call EMS_Do_Request("*** ALL DONE ***", "OK")
  40.  
  41. call close(out)
  42.  
  43. userlist = Get_Userlist()
  44.  
  45. replace(editor, cfg, '%s')
  46. replace(editor, userlist, '%s')
  47.  
  48. exit
  49.  
  50.  
  51. Ask_Aliases: procedure
  52.  
  53.     say 'Asking for aliases...'
  54.     call writeln(out, ';Aliases')
  55.  
  56.     do until ret='CANCEL'
  57.         ret = EMS_String_Select('Please enter the alias-id', 'name')
  58.         if ret='CANCEL'    then iterate
  59.  
  60.         ret = EMS_String_Select('Please enter the alias-name', 'alias')
  61.         if ret='CANCEL' then iterate
  62.  
  63.         call writeln(out, '#SYSOPNAME' strip(name) '"'strip(alias)'"')
  64.  
  65.         name    = ''
  66.         alias    = ''
  67.     end
  68.  
  69.     call writeln(out, '')
  70.  
  71. return
  72.  
  73.  
  74. Get_Addresses: procedure Expose path. akas address.
  75.  
  76.     say 'Setting addresses...'
  77.     call writeln(out, ';Addresses')
  78.  
  79.     akas            = ''
  80.     address.    = ''
  81.     a                    = 0
  82.  
  83.     call EMS_Domains('domain')
  84.     call EMS_Sort_Stem('domain')
  85.  
  86.     do n=1 to domain.0
  87.         tmp        = domain.n
  88.         tmp2    = path.general || tmp
  89.         call EMS_String_Select('Areas-path for domain "'tmp'"', 'tmp2')
  90.         path.tmp    = path(tmp2)
  91.  
  92.         call EMS_Akas('aka', domain.n)
  93.         call EMS_Sort_Stem('aka')
  94.  
  95.         akas            = akas aka.1
  96.         aka.1            = Make_5D(aka.1)
  97.         address.n    = aka.1
  98.  
  99.         call writeln(out, '#ADDRESS' left(aka.1, max(length(aka.1), 25)) '0')
  100.         do m=2 to aka.0
  101.             akas = akas aka.m
  102.             aka.m = Make_5D(aka.m)
  103.             call writeln(out, left('#AKA', 8) left(aka.m, max(length(aka.m), 25)) '0')
  104.         end
  105.     end
  106.  
  107.     address.0 = domain.0
  108.  
  109.     call writeln(out, '')
  110. return
  111.  
  112.  
  113. Get_Areas: procedure Expose path. akas cmd. dlg.
  114.  
  115.     say 'Setting areas...'
  116.     call writeln(out, ';Areas')
  117.  
  118.     call EMS_Areas('area', , 'MAIL')
  119.     do n=1 to area.0
  120.         call Set_Area(area.n, 'MAIL')
  121.     end
  122.  
  123.     call Set_Area('BAD_MSGS', 'BAD')
  124.  
  125.     call EMS_Areas('area', , 'ECHO')
  126.     do n=1 to area.0
  127.         if area.n='BAD_MSGS' then iterate
  128.         call Set_Area(area.n, 'ECHO')
  129.     end
  130.  
  131.     call EMS_Areas('area', , 'FILE')
  132.     do n=1 to area.0
  133.         call Set_Area(area.n, 'FECHO')
  134.     end
  135.  
  136.     call EMS_Areas('area', , 'TICK')
  137.     do n=1 to area.0
  138.         call Set_Area(area.n, 'TICK')
  139.     end
  140.  
  141.     say
  142. return
  143.  
  144.  
  145. Get_Archivers: procedure Expose arc_cfg
  146.  
  147.     call writeln(out, ';Archivers')
  148.     call writeln(out, ';*** Sorry, this has to be done manually! ***')
  149.     call writeln(out, '')
  150.  
  151. return
  152.  
  153.  
  154. Get_Domain_Addr: procedure Expose address.
  155.  
  156.     arg . '@' domain .
  157.  
  158.     do n=1 to address.0
  159.         parse value upper(address.n) with . '@' check .
  160.  
  161.         if check=domain then return address.n
  162.     end
  163.  
  164. return '9999:9999/9999@wrongnet'
  165.  
  166.  
  167. Get_Groups: procedure Expose cmd. def_cmd dlg.
  168.  
  169.     say 'Setting groups...'
  170.     call writeln(out, ';Groups')
  171.  
  172.     call EMS_Areas('area')
  173.  
  174.     do n=1 to area.0
  175.         'echo "." noline'
  176.  
  177.         group = strip(EMS_Area_Group_Name(area.n))
  178.         if group='' then iterate
  179.  
  180.         call EMS_Add_To_Stem('groups', upper(group), 'UNIQUE')
  181.     end
  182.  
  183.     call EMS_Nodes('node')
  184.  
  185.     do n=1 to node.0
  186.         'echo "." noline'
  187.  
  188.         call EMS_Node_Groups_Get(node.n, 'group')
  189.  
  190.         do m=1 to group.0
  191.             call EMS_Add_To_Stem('groups', upper(group.m.0), 'UNIQUE')
  192.         end
  193.     end
  194.  
  195.     call EMS_Sort_Stem('groups')
  196.  
  197.     call writeln(out, '#GROUP DUMMY  ; *** THIS GROUP WAS SET TO AREAS BELONGING TO NO GROUP!!!! ***' )
  198.  
  199.     cmd.    = ''
  200.  
  201.     do n=1 to groups.0
  202.         call writeln(out, '#GROUP' groups.n)
  203.     end
  204.  
  205.     call writeln(out, '')
  206.     call writeln(out, ';Tickcommands')
  207.     say
  208.  
  209.     do n=1 to groups.0
  210.         group = upper(groups.n)
  211.  
  212.         tmp    = group
  213.         if EMS_String_Select('TickCommand-Name for "'group'"', 'tmp')='CANCEL'    then iterate
  214.  
  215.         cmd.group = upper(strip(tmp))
  216.  
  217.         tmp    = replace(def_cmd, group, '%g%')
  218.         if EMS_String_Select('TickCommand for "'cmd.group'"', 'tmp')='CANCEL'        then iterate
  219.  
  220.         call writeln(out, '#TICKCOMMAND' left(cmd.group, max(length(cmd.group), 15)) '"'tmp'"')
  221.  
  222.         tmp=''
  223.         if dlg.dlg then
  224.             if EMS_String_Select('Announcement-areas for "'cmd.group'"', 'tmp')~='CANCEL' then
  225.         do
  226.                     do while tmp~=''
  227.                         parse var tmp area tmp
  228.                         area = strip(area)
  229.                         if area='' then iterate
  230.  
  231.               dlg.group    = dlg.group || area'+'
  232.                     end
  233.                     dlg.group = '#AREAS=('upper(strip(dlg.group, 'b', '+'))')'
  234.                 end
  235.  
  236.         say left(group, 20) left(cmd.group, 10) tmp
  237.     end
  238.  
  239.     call writeln(out, '')
  240.     say
  241. return
  242.  
  243.  
  244. Get_Links: procedure Expose akas
  245.  
  246.     arg area
  247.  
  248.     call EMS_Areafix_Area_Links_Get(area, 'link')
  249.     call EMS_Sort_Stem('link')
  250.  
  251.     str = ''
  252.  
  253.     do n=1 to link.0
  254.     if find(akas, link.n)>0 then iterate
  255.  
  256.         parse var link.n zone ':' net '/' node '@' .
  257.         parse var node node '.' point .
  258.  
  259.         if point~='' then
  260.             if point=0 then point = ''
  261.             else                        point = '.'point
  262.  
  263.         select
  264.             when  last_zone~=zone        then str = strip(str zone':'net'/'node || point)
  265.             when   last_net~=net        then str = strip(str net'/'node || point)
  266.             when  last_node~=node        then str = strip(str node || point)
  267.             when last_point~=point    then str = strip(str point)
  268.             otherwise nop
  269.         end
  270.  
  271.         last_zone        = zone
  272.         last_net        = net
  273.         last_node        = node
  274.         last_point    = point
  275.     end
  276.  
  277. return strip(str)
  278.  
  279.  
  280. Get_Nodes: procedure Expose newareas address.
  281.  
  282.     say 'Setting nodes...'
  283.     call writeln(out, ';Nodes')
  284.  
  285.     call EMS_Nodes('node')
  286.     call EMS_Sort_Stem('node')
  287.  
  288.     do n=1 to node.0
  289.         'echo "." noline'
  290.  
  291.         parse value upper(EMS_Node_Addressing(node.n)) with . '_' tmp .
  292.         if tmp=''        then iterate
  293.         if tmp='3D'    then tmp='4D'
  294.         addr_type = 'ADDR'tmp
  295.  
  296.         parse value upper(EMS_Node_Packet_Type(node.n)) with . '_' tmp .
  297.         select
  298.             when tmp='2'        then pkt_type = 'PACK3D'
  299.             when tmp='2+'     then pkt_type = 'PACK4D'
  300.             when tmp='2.2'    then pkt_type = 'PACK5D'
  301.             otherwise iterate
  302.         end
  303.  
  304.         node                = Make_5D(node.n)
  305.         flavor            = upper(EMS_Node_Flavor(node.n))
  306.         arcer                = upper(EMS_Node_Archiver(node.n))
  307.         Pkt_PW            = upper(strip(EMS_Node_Packet_Pwd_In(node.n)))
  308.         Areafix_PW    = upper(strip(EMS_Node_Areafix_Pwd_In(node.n)))
  309.  
  310.         if Areafix_PW=''    then Areafix_PW    = upper(strip(EMS_Node_Areafix_Pwd_Out(node.n)))
  311.         if arcer=''                then arcer            = 'LHA'
  312.  
  313.         if Pkt_PW~='' then Tick_PW = Pkt_PW
  314.         else                             Tick_PW = Areafix_PW
  315.  
  316.         call writeln(out, '#NODE' left(node, max(length(node.n), 25)) addr_type pkt_type flavor flavor arcer)
  317.  
  318.         call EMS_Node_Groups_Get(node.n, 'group')
  319.  
  320.         do m=1 to group.0
  321.             call writeln(out, 'Group' left(upper(group.m.0), max(length(group.m.0), 15)) group.m.1)
  322.         end
  323.  
  324.         if Pkt_PW~=''            then call writeln(out, 'PacketPW              "'Pkt_PW'"')
  325.         if Areafix_PW~='' then call writeln(out, 'AreaFixPW             "'Areafix_PW'"')
  326.         if Tick_PW~=''        then call writeln(out, 'TickPW                "'Tick_PW'"')
  327.  
  328.         if EMS_Node_CanCreateAreas(node.n)='TRUE' then call writeln(out, 'CanCreateAreas' newareas Get_Domain_Addr(node) 'PassThrough DUMMY 100')
  329.  
  330.     call writeln(out, '')
  331.     end
  332.  
  333.     call writeln(out, '')
  334.     say
  335. return
  336.  
  337.  
  338. Get_Routing: procedure
  339.  
  340.     call writeln(out, ';Routing')
  341.     call writeln(out, ';*** Sorry, this has to be done manually! ***')
  342.   call writeln(out, '')
  343.  
  344. return
  345.  
  346.  
  347. Get_Userlist: procedure Expose LF
  348.  
  349.     say 'Converting userlist...'
  350.  
  351.     cfg='MM:config/MailManager.UserList'
  352.     if EMS_File_Select('MailManager-Userlist', 'cfg')='CANCEL' then return
  353.  
  354.     if exists(cfg) then
  355.        if EMS_Do_Request('"'cfg'"'LF'already exists!'LF || LF'Overwrite it?'LF, 'YES|NO')='NO' then return
  356.  
  357.     if ~open(out, cfg, w) then
  358.         do
  359.             say '*** ERROR: Unable to open' cfg'!!!'
  360.       return
  361.         end
  362.  
  363.     emscfg = 'ems:config/userlist'
  364.     if ~open(in, emscfg, 'r') then
  365.         do
  366.             say '*** ERROR: Unable to open' emscfg'!!!'
  367.             return
  368.         end
  369.  
  370.  
  371.     do while ~eof(in)
  372.         parse value readln(in) with first '=' rest
  373.     if first='' then iterate
  374.  
  375.         key = upper(first)
  376.  
  377.         select
  378.             when key='NAME' then
  379.                 do
  380.                     name = '"'strip(rest, 'b', '" ')'"'
  381.                     nick = ''
  382.                 end
  383.             when key='NICK'    then nick    = strip(word(rest, 1), 'b', '" ')
  384.             when key='NOTE' then nop
  385.             otherwise
  386.                 do
  387.                     parse var first first second .
  388.  
  389.                     'echo . NOLINE'
  390.                     call writeln(out, left(name, max(length(name), 30)) left(first, max(length(first), 30)) nick)
  391.  
  392.                     if second~='' then
  393.                         do
  394.                             'echo . NOLINE'
  395.                             call writeln(out, left(name, max(length(name), 30)) left(second, max(length(second), 30)) nick)
  396.                         end
  397.               end
  398.         end
  399.     end
  400.  
  401.     say
  402.  
  403.   call close(in)
  404.     call close(out)
  405.  
  406.     'c:sort' cfg cfg
  407.  
  408. return cfg
  409.  
  410.  
  411. Include_Lib: procedure
  412.  
  413.     parse arg lib, prio
  414.     if right(upper(lib), 8)~='.LIBRARY' then lib=lib'.library'
  415.     if prio='' then prio=0
  416.  
  417.     if ~show('l', lib) then
  418.         if ~addlib(lib, prio, -30, 0) then
  419.             do
  420.                 say '*** ERROR: Could not open' lib'!!! ***'
  421.                 exit 10
  422.             end
  423. return
  424.  
  425.  
  426. Make_5D: procedure
  427.  
  428.     parse arg zone ':' net '/' node '@' domain .
  429.     parse var node node '.' point
  430.     if point='' then point=0
  431. return zone':'net'/'node'.'point'@'domain
  432.  
  433.  
  434. Path: procedure
  435.  
  436.    parse arg path
  437.    if right(path,1) ~= '/' & right(path,1) ~= ':' then path = path'/'
  438. return path
  439.  
  440.  
  441. Replace: procedure
  442.  
  443.     parse arg string,new,old
  444.  
  445.     do while index(string, old) ~= 0
  446.         interpret "parse var string l '"old"' r"
  447.         string = l || new || r
  448.     end
  449.  
  450. return string
  451.  
  452.  
  453. Set_Area: procedure Expose path. akas cmd. dlg.
  454.  
  455.     parse arg area, type
  456.  
  457.     'echo "." NOLINE'
  458.  
  459.   name        = '"'area'"'
  460.     addr         = Make_5D(EMS_Area_Address(area))
  461.     domain    = EMS_Address_GetDomain(addr)
  462.     path         = path(strip(EMS_Area_Msg_Path(area)))
  463.     altpath    = path(strip(EMS_Area_Msg_AltPath(area)))
  464.     access    = 'W'
  465.     show        = 'All'
  466.     sortby    = 'Number'
  467.     mlimit    = min(left(EMS_Area_Maint_Limit(area),3), 10)
  468.  
  469.     group        = upper(strip(EMS_Area_Group_Name(area)))
  470.     if group='' then group = 'DUMMY'
  471.  
  472.     level        = EMS_Area_Group_Level(area)
  473.     if level='' | level=0 then level = 100
  474.  
  475.     mmode        = upper(EMS_Area_Maint_Mode(area))
  476.   if index(mmode, 'BYNUM')>0 then mmode = 'Number'
  477.     else                                                        mmode = 'Date'
  478.  
  479.   if EMS_Area_TwoPassImport(area)~='FALSE' then import = 'TwoPassImport'
  480.     else                                          import = ''
  481.  
  482.     if EMS_Area_PassThrough(area)='TRUE' then msgbase='PassThrough'
  483.     else
  484.         do
  485.       parse value upper(EMS_Area_Msg_DBname(area)) with tmp '_' .
  486.  
  487.             select
  488.                 when tmp='IFIDO'    then msgbase = 'Indexed'
  489.                 when tmp='QUICK'    then msgbase = 'Quick'
  490.                 when tmp='QPACK'    then msgbase = 'Compressed'
  491.         otherwise                             msgbase = 'Plain'
  492.             end
  493.         end
  494.  
  495.     desc        = strip(EMS_Area_Msg_Description(area))
  496.     if desc='' then desc='(no description available)'
  497.     desc        = '"'desc'"'
  498.  
  499.     if altpath~='' then altpath = path(altpath)
  500.  
  501.     links = Get_Links(area)
  502.  
  503.     if type~='TICK' then
  504.         do
  505.             call writeln(out, left('#'type'AREA', 10) left(name, max(length(name), 27)) left(area, max(length(area), 24)) left(path, max(length(path), 40)) left(addr, max(length(addr), 25)) left(group, max(length(group), 14)) level)
  506.       call writeln(out, 'MsgBase    ' msgbase)
  507.       call writeln(out, 'Show       ' show)
  508.       call writeln(out, 'SortBy     ' sortby)
  509.             call writeln(out, 'DeleteBy   ' mmode mlimit)
  510.             if import~=''        then call writeln(out, import)
  511.         end
  512.     else
  513.         do
  514.             if dlg.dlg then
  515.                 do
  516.                     path            = path(strip(EMS_Area_File_Path(area)))
  517.                     altpath        = path(strip(EMS_Area_File_AltPath(area)))
  518.                     usrflags    = dlg.group
  519.                     if altpath='/' then altpath = path
  520.                 end
  521.             else
  522.                 do
  523.                     if altpath=''    then    altpath = path
  524.                     else                                path        = altpath
  525.  
  526.                     usrflags = ''
  527.                 end
  528.  
  529.             call writeln(out, '#'type'AREA' left(area, max(length(area), 24)) left(altpath, max(length(altpath), 40)) left(addr, max(length(addr), 25)) left(group, max(length(group), 14)) level)
  530.             if cmd.group~='' then call writeln(out, 'TickCommand' cmd.group)
  531.     end
  532.  
  533.     if links~=''        then call writeln(out, 'Nodes      ' links)
  534.     if desc~=''            then call writeln(out, 'Desc       ' desc)
  535.     if altpath~=''    then call writeln(out, 'AltPath    ' altpath)
  536.     if usrflags~=''    then call writeln(out, 'UserFlags  ' '"'usrflags'"')
  537.     call writeln(out, '')
  538.  
  539. return
  540.  
  541.  
  542. Set_General: procedure Expose path. editor newareas def_cmd
  543.  
  544.     say 'General configs...'
  545.  
  546.     tab    = 17
  547.  
  548.     call writeln(out, '#DEFSYSOPNAME' ' "'strip(EMS_Var_Local('SYSOP_NAME'))'"')
  549.  
  550.     call writeln(out, '')
  551.  
  552.     call writeln(out, ';General config part')
  553.  
  554.     tmp = 'In:'
  555.     if EMS_String_Select('Please enter your INBOUND-dir', 'tmp')~='CANCEL' then
  556.         call writeln(out, left('#INBOUND', tab) path(strip(tmp)))
  557.  
  558.     tmp='Out:'
  559.     if EMS_String_Select('Please enter your OUTBOUND-dir', 'tmp')~='CANCEL' then
  560.         do
  561.             outbound = path(strip(tmp))
  562.             call writeln(out, left('#OUTBOUND', tab) outbound)
  563.         end
  564.     else outbound = ''
  565.  
  566.     tmp=outbound'Bundles'
  567.     if EMS_String_Select('Please enter your BUNDLE-dir', 'tmp')~='CANCEL' then
  568.         call writeln(out, left('#BUNDLEDIR', tab) path(strip(tmp)))
  569.  
  570.     tmp=outbound'Ticks'
  571.     if EMS_String_Select('Please enter your TIC-dir', 'tmp')~='CANCEL' then
  572.         call writeln(out, left('#TICDIR', tab) path(strip(tmp)))
  573.  
  574.     tmp_dir = path(EMS_Var_Local('TEMP_DIR'))
  575.  
  576.     tmp=tmp_dir'Pkts'
  577.     if EMS_String_Select('Please enter your TEMPPKTDIR-dir', 'tmp')~='CANCEL' then
  578.         call writeln(out, left('#TEMPPKTDIR', tab) path(strip(tmp)))
  579.  
  580.     tmp='Bad:'
  581.     if EMS_String_Select('Please enter your BADDIR-dir', 'tmp')~='CANCEL' then
  582.         call writeln(out, left('#BADDIR', tab) path(strip(tmp)))
  583.  
  584.     call writeln(out, left('#BACKUPDIR', tab) path(EMS_Var_Local('BACKUP_DIR')))
  585.  
  586.     call writeln(out, left('#WORKDIR', tab) tmp_dir)
  587.  
  588.     newareas = strip(EMS_Var_Local('NEWAREAS_MSG_PATH'))
  589.     newareas = left(newareas, pos('%', newareas)-1)
  590.     if EMS_String_Select('Please enter your MSGBASEDEVice', 'newareas')~='CANCEL' then
  591.         do
  592.       path.general = path(strip(newareas))
  593.             call writeln(out, left('#MSGBASEDEV', tab) path.general)
  594.         end
  595.     else path.general = ''
  596.  
  597.     call writeln(out, left('#STATS', tab) '"MM:Config/MailManager.Stats"')
  598.  
  599.     call writeln(out, left('#USERLIST', tab) '"MM:Config/MailManager.Userlist"')
  600.  
  601.     call writeln(out, left('#NODELISTDIR', tab) path(EMS_Var_Local('NODELIST_PATH')))
  602.  
  603.     editor=strip(EMS_Var_Local('SCRIPT_EDITOR_NAME')) '%s' strip(EMS_Var_Local('SCRIPT_EDITOR_ARGS'))
  604.     call writeln(out, left('#EDITOR', tab) '"'editor'"')
  605.  
  606.     call writeln(out, left('#DEFORIGIN', tab) '"'strip(EMS_Var_Local('ORIGIN_NAME'))'"')
  607.  
  608.     call writeln(out, left('#DELETECHAR', tab) '#')
  609.  
  610.     call writeln(out, left('#PREPARSEKLUDGE', tab) '"\8"')
  611.  
  612.     call writeln(out, left('#PREPARSEQUOTED', tab) '"\3"')
  613.  
  614.     tmp = EMS_Var_Local('LOG_LEVEL')
  615.     call writeln(out, left('#ECHOLEVEL', tab) tmp)
  616.     call writeln(out, left('#LOGLEVEL', tab) tmp)
  617.  
  618.     tmp='CON:0/433/720/107/Mail Manager  Log Window/AUTO/INACTIVE/SCREEN MMScreen'
  619.     if EMS_String_Select('Please enter your LOGWINDOW', 'tmp')~='CANCEL' then
  620.         call writeln(out, left('#LOGWINDOW', tab) '"'strip(tmp)'"')
  621.  
  622.     tmp='Logs:MM.log'
  623.     if EMS_String_Select('Please enter your LOGFILE', 'tmp')~='CANCEL' then
  624.         call writeln(out, left('#LOGFILE', tab) '"'strip(tmp)'"')
  625.  
  626.     call writeln(out, left('#ARCHIVEFILE',        tab) '"'path(EMS_Var_Local('SCRIPT_TEXT_DIR'))'MM_Mail.txt"')
  627.  
  628.     call writeln(out, left('#MINFREEMEM',            tab) EMS_Var_Local('MIN_FREEMEM_SIZE')%1024)
  629.  
  630.     call writeln(out, left('#MAXPKTSIZE',            tab) EMS_Var_Local('MAX_PACKET_SIZE')%1024 )
  631.  
  632.     call writeln(out, left('#MAXBUNDLESIZE',    tab) EMS_Var_Local('MAX_ARCHIVE_SIZE')%1024)
  633.  
  634.     call writeln(out, left('#AREAORDER', tab) 'CONFIG')
  635.  
  636.   if EMS_Switch_Local('KEEP_MATRIX')='ON' then tmp=''
  637.     else                                         tmp='NO'
  638.     call writeln(out, '#'tmp'KEEPMATRIX')
  639.  
  640.     if EMS_Do_Request('Keep Sysop-mail?', 'YES|NO')='YES' then tmp=''
  641.     else                                                       tmp='NO'
  642.     call writeln(out, '#'tmp'KEEPSYSOP')
  643.  
  644.     if EMS_Do_Request('Check domains (real 5D)?', 'YES|NO')='YES' then tmp=''
  645.     else                                                                                        tmp='NO'
  646.     call writeln(out, '#'tmp'CHECKDOMAIN')
  647.  
  648.     if EMS_Do_Request('Use domains in origins?', 'YES|NO')='YES' then tmp=''
  649.     else                                                                                       tmp='NO'
  650.     call writeln(out, '#'tmp'ORIGIN5D')
  651.  
  652.   if EMS_Switch_Local('DO_BACKUP')='ON' then tmp=''
  653.     else                                                      tmp='NO'
  654.     call writeln(out, '#'tmp'DOBACKUP')
  655.  
  656.     if EMS_Do_Request('Show PASSTHROUGH-areas?', 'YES|NO')='YES' then tmp=''
  657.     else                                                                                       tmp='NO'
  658.     call writeln(out, '#'tmp'SHOWPASSTHRO')
  659.  
  660.     call writeln(out, '#CRUNCHMAIL')
  661.  
  662.     call writeln(out, '#TEXTSTYLES')
  663.  
  664.     call writeln(out, '#SHOWKLUDGES')
  665.  
  666.     call writeln(out, '#QUOTEKLUDGES')
  667.  
  668.     call writeln(out, '#REFLOW')
  669.  
  670.   if EMS_Switch_Local('KILL_DUPES')='ON' then tmp='KILL'
  671.     else                                                          tmp='BAD'
  672.     call writeln(out, left('#CHECKDUPE', tab) tmp)
  673.  
  674.     tmp='%s %a %p %P %u %d %n %N %m %M %r %R %o %f'
  675.     if EMS_String_Select('Please enter a default Tick-COMMAND', 'tmp')='CANCEL' then def_cmd = ''
  676.     else                                                                                                                                                         def_cmd = strip(tmp)
  677.  
  678.     call writeln(out, '#SMARTEXPORT')
  679.  
  680.     call writeln(out, '')
  681. return
  682.